package main

import (
	"fmt"
	"os"
)

type student struct {
	id   int64
	name string
}

//造一个学生的管理者
type studentMgr struct {
	allStudent map[int64]student
}

//查看学生
func (s studentMgr) showAllStudent() {
	//把所有的学生打印出来
	//从s.allStudent这个map中把所有的学生逐个拎出来
	fmt.Println("现有所有学生：")
	for _, stu := range s.allStudent {
		fmt.Printf("学号=%d 姓名=%s \n", stu.id, stu.name)
	}
}

//增加学生
func (s studentMgr) addStudent() {
	//向allStudent添加一个新学生
	//1.1获取用户输入
	var (
		id   int64
		name string
	)
	fmt.Printf("请输入学号：")
	fmt.Scanln(&id)
	fmt.Printf("请输入姓名：")
	fmt.Scanln(&name)
	newStu := student{
		id:   id,
		name: name,
	}
	s.allStudent[newStu.id] = newStu
	fmt.Println("学生已添加！")
	s.showAllStudent()

}

//修改学生
func (s studentMgr) editStudent() {
	var (
		id   int64
		name string
	)
	fmt.Printf("请输入要修改的学生的学号：")
	fmt.Scanln(&id)
	value, ok := s.allStudent[id]
	if !ok {
		fmt.Println("查无此学号")
		os.Exit(1)
	}
	fmt.Println("要修改人员的姓名:" + value.name)
	fmt.Printf("请输入修改后的姓名：")
	fmt.Scanln(&name)

	/* 	newStu := student{
		id:   id,
		name: name,
	} */
	//fmt.Println(s.allStudent[id].id, newStu.id)
	value.name = name
	s.allStudent[id] = value

	fmt.Println("学生已修改！")
	s.showAllStudent()
}

//删除学生
func (s studentMgr) deleteStudent() {
	var (
		id int64
	)
	fmt.Printf("请输入要要删除学生的学号：")
	fmt.Scanln(&id)
	delete(s.allStudent, id)
	fmt.Println("学生已删除！")
	s.showAllStudent()
}
